home *** CD-ROM | disk | FTP | other *** search
/ Penthouse Guide to Cybersex / Penthouse Guide to Cybersex.iso / pc / penthous / setup / setup.mst < prev    next >
Text File  |  1995-05-10  |  13KB  |  376 lines

  1.  
  2. rem ---------------------------------------------------------------------
  3. rem
  4. rem SETUP.MST    - MSSETUP Installation Script
  5. rem
  6. rem                Version 1.0
  7. rem
  8. rem                (c) 1993 San Francisco Canyon Co. All Rights Reserved.
  9. rem
  10. rem ---------------------------------------------------------------------
  11.  
  12.  
  13. rem Required includes to interface with MSSETUP DLL's
  14. rem -------------------------------------------------
  15. '$INCLUDE 'setupapi.inc'
  16. '$INCLUDE 'msdetect.inc'
  17.  
  18.  
  19. rem Dialog box id's
  20. rem ---------------
  21. rem Note: If MSSETUP were really smart, we could use the
  22. rem #defines in DIALOGS.HR. Instead, we must manually
  23. rem keep them in step
  24. rem ----------------------------------------------------
  25.     CONST DESTPATH      = 300          ''Gets destination path
  26.     CONST EXITQUIT      = 600          ''Exits on user request
  27.     CONST EXITSUCCESS   = 700          ''Exits when install is done
  28.     CONST TOOBIG        = 6300         ''Not enough space on target disk error
  29.     CONST BADPATH       = 6400         ''Bad destination path error
  30.     CONST BADWINDOWS    = 6500         ''Wrong Windows release
  31.     CONST EXITFAILURE   = 6600         ''Exits on error
  32.  
  33.  
  34. rem String id's
  35. rem -----------
  36. rem Note: If MSSETUP were really smart, we could use the
  37. rem #defines in DIALOGS.HR. Instead, we must manually
  38. rem keep them in step
  39. rem ----------------------------------------------------
  40.     CONST STR_UTILITY   = 1024         ''Utility
  41.     CONST STR_GROUP     = 1025         ''Program Manager group
  42.     CONST STR_TITLE     = 1026         ''Installer Title
  43.     CONST STR_MSG1      = 1027         ''Version error message part 1
  44.     CONST STR_MSG2      = 1028         ''Version error message part 2
  45.     CONST STR_WARNING   = 1029         ''Warning
  46.     CONST STR_README    = 1030         ''Read Me
  47.  
  48.  
  49. rem Miscellaneous Constants
  50. rem -----------------------
  51.     CONST NOLOGO = 1                   ''Dummy NULL bitmap (must be 1)
  52.     CONST LOGO = 2                     ''Background bitmap
  53.     CONST MOVIE = 2                    ''Movie placeholder bitmap
  54.     CONST NOSPACE = 1                  ''No space to complete install
  55.     CONST INSTALLOK = 2                ''Install completed OK
  56.     CONST INSTALLFAILED =3             ''Install failed for some reason
  57.  
  58.  
  59. rem Global Variables
  60. rem ----------------
  61.     GLOBAL SOURCE$                     ''Source directory
  62.     GLOBAL DEST$                       ''Default destination directory
  63.     GLOBAL CUIDLL$                     ''User interface DLL
  64.     GLOBAL SETUPPATH$                  ''Setup destination path
  65.     GLOBAL HELPPROC$                   ''Help dialog procedure
  66.     GLOBAL EXTRACOSTS$                 ''List of extra costs to add per drive
  67.     GLOBAL APPNEEDS$                   ''Disk space costs per drive
  68.     GLOBAL SECTIONKEY$                 ''INF file section key
  69.     GLOBAL SUCCESS%                    ''Installation completion code
  70.     GLOBAL EXENAME$                    ''EXE name
  71.     GLOBAL SERIESID$                   ''Series ID
  72.     GLOBAL INIFILE$                    ''.INI filename
  73.  
  74.  
  75. rem Initialize global vriables
  76. rem --------------------------
  77.     SETUPPATH$      = "C:\PHI"
  78.     SOURCE$         = GetSymbolValue("STF_SRCDIR")
  79.     DEST$           = SETUPPATH$
  80.     SUCCESS%        = INSTALLFAILED
  81.     EXTRACOSTS$     = "ExtraCosts"
  82.     APPNEEDS$       = "AppNeeds"
  83.     SECTIONKEY$     = "SectionKey"
  84.  
  85.     FOR i% = 1 TO 26 STEP 1
  86.         AddListItem EXTRACOSTS$, "16384"
  87.     NEXT i%
  88.  
  89.  
  90. rem Get name of localized user interface dialogs
  91. rem --------------------------------------------
  92.     CUIDLL$ = "setup.DLL"
  93.  
  94.  
  95. rem Subroutines and Functions
  96. rem -------------------------
  97.     DECLARE FUNCTION Install AS INTEGER
  98.     DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  99.     DECLARE FUNCTION GetDLLVersion LIB "setup.dll" (szDLL$) AS INTEGER
  100.     DECLARE FUNCTION HideCriticalDirectory LIB "setup.dll" (szDir$) AS INTEGER
  101.     DECLARE FUNCTION GetResourceString LIB "setup.dll" (szResource$, idString%) AS INTEGER
  102.     DECLARE FUNCTION StartCustomSetup LIB "setup.dll" (hinst%, hwnd%) AS INTEGER
  103.     DECLARE FUNCTION StopCustomSetup LIB "setup.dll" (hinst%, hwnd%) AS INTEGER
  104.  
  105.  
  106. rem Initialize custom setup logic
  107. rem -----------------------------
  108.     SetBitmap CUIDLL$, NOLOGO
  109.     i% = GetResourceString (CUIDLL$, STR_TITLE)
  110.     SetTitle GetSymbolValue ("ResourceString")
  111.     i% = StartCustomSetup (HinstFrame(), HwndFrame ())
  112.     i% = SetBeepingMode(1)
  113.  
  114.  
  115. rem Make sure that we are running on Windows 3.1 or better
  116. rem ------------------------------------------------------
  117.     IF GetWindowsMajorVersion() < 3 THEN
  118.        sz$ = UIStartDlg(CUIDLL$, BADWINDOWS, "FInfo0DlgProc", 0, "")
  119.        UIPop 1
  120.        GOTO CLEANUP
  121.     END IF
  122.  
  123.     IF (GetWindowsMajorVersion() = 3) AND (GetWindowsMinorVersion() < 10) THEN
  124.        sz$ = UIStartDlg(CUIDLL$, BADWINDOWS, "FInfo0DlgProc", 0, "")
  125.        UIPop 1
  126.        GOTO CLEANUP
  127.     END IF
  128.  
  129.  
  130. rem Make sure that we are running on a 386 or better
  131. rem ------------------------------------------------
  132.     IF GetWinFlags() AND 2 THEN
  133.        sz$ = UIStartDlg(CUIDLL$, BADWINDOWS, "FInfo0DlgProc", 0, "")
  134.        UIPop 1
  135.        GOTO CLEANUP
  136.     END IF
  137.  
  138.  
  139. rem Find and read the .INF file.
  140. rem -------------------------------------------------------------------
  141.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  142.  
  143.     IF szInf$ = "" THEN
  144.        szTemp$ = GetSymbolValue("STF_SRCDIR")
  145.        szInf$ = szTemp$ + "CD.INF"
  146.     END IF
  147.  
  148.     ReadInfFile szInf$
  149.  
  150.  
  151. rem Which PHI series are we installing?
  152. rem -------------------------------------------------------------------
  153.     IF DoesFileExist(MakePath(GetSymbolValue("STF_SRCDIR"), "DEMO.ID"), femExists) = 1 THEN
  154.        EXENAME$ = "demo.exe"
  155.        SERIESID$ = "Demo"
  156.        INIFILE$ = "demo.ini"
  157.     ELSEIF DoesFileExist(MakePath(GetSymbolValue("STF_SRCDIR"), "DEMO_PG.ID"), femExists) = 1 THEN
  158.        EXENAME$ = "demo_pg.exe"
  159.        SERIESID$ = "PG Demo"
  160.        INIFILE$ = "demo_pg.ini"
  161.     ELSEIF DoesFileExist(MakePath(GetSymbolValue("STF_SRCDIR"), "1.ID"), femExists) = 1 THEN
  162.        EXENAME$ = "phi1.exe"
  163.        SERIESID$ = "#1"
  164.        INIFILE$ = "phi1.ini"
  165.     ELSEIF DoesFileExist(MakePath(GetSymbolValue("STF_SRCDIR"), "2.ID"), femExists) = 1 THEN
  166.        EXENAME$ = "phi2.exe"
  167.        SERIESID$ = "#2"
  168.        INIFILE$ = "phi2.ini"
  169.     ELSEIF DoesFileExist(MakePath(GetSymbolValue("STF_SRCDIR"), "3.ID"), femExists) = 1 THEN
  170.        EXENAME$ = "phi3.exe"
  171.        SERIESID$ = "#3"
  172.        INIFILE$ = "phi3.ini"
  173.     END IF
  174.  
  175.  
  176. rem Get the destination path; if it's bad, we display an error
  177. rem ----------------------------------------------------------------
  178. GETPATH:
  179.     SetSymbolValue "EditTextIn", DEST$
  180.     SetSymbolValue "EditFocus", "END"
  181.  
  182. GETPATHL1:
  183.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", 0, "")
  184.  
  185.     DEST$ = GetSymbolValue("EditTextOut")
  186.  
  187.     IF sz$ = "CONTINUE" THEN
  188.        IF IsDirWritable(DEST$) = 0 THEN
  189.           GOSUB BADPATH
  190.           GOTO GETPATHL1
  191.        END IF
  192.  
  193.        IF DoesFileExist(MakePath(DEST$, EXENAME$), femExists) = 1 THEN
  194.           i% = GetResourceString (CUIDLL$, STR_MSG1)
  195.           szError$ = DEST$ + GetSymbolValue ("ResourceString")
  196.           i% = GetDLLVersion(MakePath(DEST$, EXENAME$))
  197.           szVersion$ = GetSymbolValue ("VersionString")
  198.           szError$ = szError$ + szVersion$
  199.           i% = GetResourceString (CUIDLL$, STR_MSG2)
  200.           szError$ = szError$ + GetSymbolValue ("ResourceString")
  201.           i% = GetResourceString (CUIDLL$, STR_WARNING)
  202.           szCaption$ = GetSymbolValue ("ResourceString")
  203.           i% = DoMsgBox(szError$, szCaption$, 20)
  204.           UIPop 1
  205.           IF i% = 7 THEN
  206.              GOTO GETPATHL1
  207.           END IF
  208.        END IF
  209.  
  210.        UIPop 1
  211.  
  212.     ELSEIF sz$ = "REACTIVATE" THEN
  213.        GOTO GETPATHL1
  214.  
  215.     ELSE
  216.        GOSUB ASKQUIT
  217.        GOTO GETPATH
  218.  
  219.     END IF
  220.  
  221.  
  222. rem Perform actual installation
  223. rem ---------------------------
  224. INSTALL:
  225.     SUCCESS% = Install
  226.  
  227.     IF SUCCESS% = NOSPACE THEN
  228.        GOSUB TOOBIG
  229.        GOTO GETPATH
  230.     END IF
  231.  
  232.  
  233. rem When done, issue dialog
  234. rem -----------------------
  235. QUIT:
  236.     IF SUCCESS% = INSTALLOK THEN
  237.        sz$ = UIStartDlg(CUIDLL$, EXITSUCCESS, "FInfo0DlgProc", 0, "")
  238.     ELSE
  239.        sz$ = UIStartDlg(CUIDLL$, EXITFAILURE, "FInfo0DlgProc", 0, "")
  240.     END IF
  241.     UIPop 1
  242.  
  243.  
  244. rem Clean up all processing
  245. rem -----------------------
  246. CLEANUP:
  247.     i% = StopCustomSetup (HinstFrame(), HwndFrame ())
  248.  
  249.     END
  250.  
  251.  
  252. rem ASKQUIT: The user requested quit; does (s)he really want to?
  253. rem ------------------------------------------------------------
  254. ASKQUIT:
  255.     sz$ = UIStartDlg(CUIDLL$, EXITQUIT, "FInfoDlgProc", 0, "")
  256.     UIPop 1
  257.     IF sz$ = "CONTINUE" THEN
  258.        RETURN
  259.     END IF
  260.     GOTO CLEANUP
  261.  
  262.  
  263. rem BADPATH: The user entered an invalid destination directory
  264. rem ----------------------------------------------------------
  265. BADPATH:
  266.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  267.     IF sz$ = "REACTIVATE" THEN
  268.        GOTO BADPATH
  269.     END IF
  270.     UIPop 1
  271.  
  272.     RETURN
  273.  
  274.  
  275. rem TOOBIG: The source files won't fit on the requested destination disk
  276. rem --------------------------------------------------------------------
  277. TOOBIG:
  278.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  279.     IF sz$ = "REACTIVATE" THEN
  280.        GOTO TOOBIG
  281.     END IF
  282.     UIPop 1
  283.  
  284.     RETURN
  285.  
  286.  
  287. rem Install: Perform actual installation
  288. rem ------------------------------------
  289. FUNCTION Install STATIC AS INTEGER
  290.  
  291.     rem Create the destination directory
  292.     rem --------------------------------
  293.         CreateDir DEST$, cmoNone
  294.  
  295.     rem Build the copy list
  296.     rem -------------------
  297.         AddSectionFilesToCopyList "Files", SOURCE$, DEST$
  298.         AddSectionFilesToCopyList "Pictures", SOURCE$, MakePath(DEST$, "pictures")
  299.         AddSectionFilesToCopyList "Sounds", SOURCE$, MakePath(DEST$, "sounds")
  300.  
  301.     rem Check that we have enough free space to perform the install
  302.     rem -----------------------------------------------------------
  303.         ListSym$ = APPNEEDS$
  304.         StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  305.  
  306.         drive$ = MID$(DEST$, 1, 1)
  307.         ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  308.         cost& = VAL(GetListItem(APPNEEDS$, ndrive%))
  309.         free& = GetFreeSpaceForDrive(drive$)
  310.  
  311.         IF cost& >= free& THEN
  312.            Install = NOSPACE
  313.            EXIT FUNCTION
  314.         END IF
  315.  
  316.     rem Copy all the files from the source to the destination
  317.     rem -----------------------------------------------------
  318.         CopyFilesInCopyList
  319.  
  320.     rem Hide critical directories
  321.     rem -------------------------
  322.         i% = HideCriticalDirectory (MakePath(DEST$, "pictures"))
  323.         i% = HideCriticalDirectory (MakePath(DEST$, "sounds"))
  324.  
  325.     rem Update .INI File
  326.     rem ----------------
  327.         SPLITPATH SOURCE$, drv$, dir$, filename$, ext$
  328.         ini$ = MakePath(DEST$, INIFILE$)
  329.         RemoveIniKey ini$, "PHI", "Photographer", cmoNone
  330.         RemoveIniSection ini$, "Directories", cmoNone
  331.         CreateIniKeyValue ini$, "Directories", "Pictures", MakePath(DEST$, "pictures") + "\" , cmoNone
  332.         CreateIniKeyValue ini$, "Directories", "Sounds", MakePath(DEST$, "sounds") + "\" , cmoNone
  333.         CreateIniKeyValue ini$, "Directories", "Posters", drv$ + "\penthous\posters\" , cmoNone
  334.         CreateIniKeyValue ini$, "Directories", "Movies", drv$ + "\penthous\movies\" , cmoNone
  335.         CreateIniKeyValue ini$, "Directories", "Pet0", drv$ + "\penthous\movies\pet0\" , cmoNone
  336.         CreateIniKeyValue ini$, "Directories", "Pet1", drv$ + "\penthous\movies\pet1\" , cmoNone
  337.         CreateIniKeyValue ini$, "Directories", "Pet2", drv$ + "\penthous\movies\pet2\" , cmoNone
  338.  
  339.     rem Create a Program Manager group
  340.     rem ------------------------------
  341.         i% = GetResourceString (CUIDLL$, STR_GROUP)
  342.         GROUP$ = GetSymbolValue ("ResourceString")
  343.         CreateProgmanGroup GROUP$, "", cmoNone
  344.         i% = GetResourceString (CUIDLL$, STR_UTILITY)
  345.         CreateProgmanItem GROUP$, GetSymbolValue ("ResourceString") + " " + SERIESID$, MakePath(DEST$,EXENAME$), "", cmoOverwrite
  346.         i% = GetResourceString (CUIDLL$, STR_README)
  347.         CreateProgmanItem GROUP$, GetSymbolValue ("ResourceString"), "write " + MakePath(DEST$,"readme.wri"), "", cmoOverwrite
  348.  
  349.     rem Indicate install completed OK
  350.     rem -----------------------------
  351.         Install = INSTALLOK
  352.  
  353. END FUNCTION
  354.  
  355.  
  356. rem MakePath: Builds path from directory and file
  357. rem ---------------------------------------------
  358. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  359.  
  360.     IF szDir$ = "" THEN
  361.        MakePath = szFile$
  362.  
  363.     ELSEIF szFile$ = "" THEN
  364.        MakePath = szDir$
  365.  
  366.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  367.        MakePath = szDir$ + szFile$
  368.  
  369.     ELSE
  370.        MakePath = szDir$ + "\" + szFile$
  371.  
  372.     END IF
  373.  
  374. END FUNCTION
  375.  
  376.